python数据结构之列表(list) | 您所在的位置:网站首页 › 列表 长度 › python数据结构之列表(list) |
列表
1.创建方式 [] 或 list() a = [] # 表示一个空列表 a = [1, 2, 3, 4, 5] a[1, 2, 3, 4, 5] list("hello world")['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] l = list("hello world")#l列表长度为11, 小标从0到10 l[1]'e' l[10]'d' l[-1] # 逆序取值 在数值前面加上负号,表示逆序取值'd' 2.列表的切片功能 l[0:5] # 表示下标从0开始遍历到4, 左闭右开['h', 'e', 'l', 'l', 'o'] l[开始:结尾:步长] # 步长可以省略,默认值为1 l[:5]#表示从最开始切片到4['h', 'e', 'l', 'l', 'o'] l[5:] # 表示从5开始切片到最后[' ', 'w', 'o', 'r', 'l', 'd'] l[:] #表示遍历所有['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] l[::2] # 步长为2,遍历['h', 'l', 'o', 'w', 'r', 'd'] l[::-1] #步长为-1, 表示倒序遍历,实现列表的翻转['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h'] 3.向列表中添加元素 # attend 表示在列表最后添加一个元素 number = [1, 2, 3, 4, 5] number.append(6) number[1, 2, 3, 4, 5, 6] # 使用extend()向列表末尾添加多个元素 number = [1, 2, 3, 4, 5, 6] number.extend([7, 8]) number[1, 2, 3, 4, 5, 6, 7, 8] # 在列表的任意位置插入元素 number.insert(0, 0) #第一个参数表示列表中的位置,第二个参数表示要插入的值 number[0, 0, 1, 2, 3, 4, 5, 6, 7, 8] 4.从列表中获取元素 # 交换位置 name = ["鸡蛋", "鸭蛋", "鹅蛋", "鸟蛋"] name[0], name[3] = name[3], name[0] name['鸟蛋', '鸭蛋', '鹅蛋', '鸡蛋'] name[0]'鸟蛋' 列表赋值的骚操作 L1 = [1, 2, 3] a, b, c = L1 print(a, b, c)1 2 3 5.从列表中删除元素 有三种方法:remove()、del、pop() # .remove(x)函数,并不需要知到x在哪个位置,如果想要删除的东西没在列表中的话,就会报错 # remove()函数不能指定删除某个位置的值 name.remove("鹅蛋") name['鸟蛋', '鸭蛋', '鸡蛋'] # del函数 del name[0] name['鸭蛋', '鸡蛋'] # 删除整个列表,在del 后面加上列表名字即可 del name # 再执行name语句便会报错 # .pop()默认弹出列表中最后一个数 name = ["鸡蛋", "鸭蛋", "鹅蛋", "鸟蛋"] name.pop()'鸟蛋' # 也可以在pop()中加入索引值 name = ["鸡蛋", "鸭蛋", "鹅蛋", "鸟蛋"] name.pop(2)'鹅蛋' name['鸡蛋', '鸭蛋', '鸟蛋'] 6.列表比较 # list比较大小是从第一个元素开始,一个一个进行比较,只要有了结果就会马上返回值 list1 = [123] list2 = [456] list1 > list2False list1 = [123, 789] list2 = [456, 321] list1 > list2False 7.列表的 * + 运算 # 在列表中,我们可以通过+号,实现俩个列表的拼接 list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = list1 + list2 list3[1, 2, 3, 4, 5, 6] #也可以使用extend()函数实现列表的拼接 list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) list1[1, 2, 3, 4, 5, 6] # *(乘号)表示重复操作符,能使列表复制 list1 = [1, 2, 3] list1 *= 3 list1[1, 2, 3, 1, 2, 3, 1, 2, 3] 8.二维列表 # 如何访问二维列表中的数字 list1 = [1, 2, [3, 4, 5],6] list1[2] # 也表示一个列表[3, 4, 5] # 因为list1[2]可以看做是一个列表,所以我们可以通过对list1[2]的下标进行访问 list1[2][0]3 list1[2][1]4 8.列表中的in 和 not in list1 = [1, 2, 3, 4] 1 in list1True 5 in list1False 5 not in list1True # 对于二维数组,in 和 not in 只能判断一个层次的成员关系,如果想要判断二维数组中的元素 #是否存在,需要进入下一层次中进行访问 list1 = [1, 2, [3, 4], 5] 3 in list1False 3 in list1[2]True 9.列表中的几个函数 dir(list) # 查看列表有多少该可以使用的函数 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] # len()函数用来返回列表的长度 list1 = [1, 2, 3, 4, 5] len(list1) 5 # count()用来计算一个数在列表中出现的次数 list1 = [1, 2, 1, 2, 1, 3, 4] list1.count(1)3 # index()函数会返回一个数在列表中的位置 list1.index(4)6 list1.index(1)# 这里返回的是第一个1出现的位置0 # 我们可以通过限制范围来查找下一个值 start = list1.index(1) + 1 end = len(list1) list1.index(1, start, end)2 # reserve()方法的作用是将整个列表翻转 list1 = [1, 2, 3, 4, 5, 6] list1.reverse() list1[6, 5, 4, 3, 2, 1] # sort() 对列表中的元素进行从小到大排序 list1.sort() list1[1, 2, 3, 4, 5, 6] 深拷贝与浅拷贝 a = [1, 2, 3] b = a a[0] = 5 a[5, 2, 3] b[5, 2, 3] 我们发现当我们改变a的值时,b也会跟着改变,原因是,a与b指向了同一个内存单元, 当内存单元中的值发生改变时,所有指向这个内存单元的变量也会跟着改变 a = [1, 2, 3] b = a[:] a[0] = 5 a[5, 2, 3] b[1, 2, 3] 当a将自己切片所获得的值给b时,由于b并没有和a指向同一片内存单元,只是a将自己内存单元的东西 复制给了b所在的内存单元,所以对a内存单元的值进行改变时,并不会改变b中值 # 浅拷贝(copy()),b不会应为a的改变而改变 a = [1, 2, 3] b = a.copy() c = list(a)# c 和 d得到的都是a的返回值,并没有指向a所在的地址,所以都属于浅拷贝 d = a[:] a[0] = 5 a[5, 2, 3] b[1, 2, 3] c[1, 2, 3] d[1, 2, 3] a = [1, 2, [3, 4], 5] b = a.copy() a[1] = 6 a[2][0] = 7 a[1, 6, [7, 4], 5] b[1, 2, [7, 4], 5] 我们发现通过改变a的值,b中一维数组中的数并没有发生改变,但二维数组中的数发生了改变 因为我们copy的时候,将二维数组的地址也进行了copy所以,a与b的二维数组是指向了同一个内存单元,当我们对a的二维数组中的值进行改变时,b中二维数组中的值也会随之改变 # 深拷贝(deepcopy()) 通过深拷贝,对a中二维数组中的值进行改变时, # b中二维数组中值不会再发生变化 import copy a = [1, 2, 3, [1, 2, 3]] b = copy.deepcopy(a) a[3][0] = 4 a[1, 2, 3, [4, 2, 3]] b[1, 2, 3, [1, 2, 3]] # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象内部的子对象 import copy a = [1, 2, 3, [1, 2, 3]] b = copy.copy(a) a[3][1] = 0 a[1] = 6 a[1, 6, 3, [1, 0, 3]] b[1, 2, 3, [1, 0, 3]] |
CopyRight 2018-2019 实验室设备网 版权所有 |